This page last changed on Jan 29, 2009 by cmd0219.
Sprint 1 Goal
Focus on update functionality with basic usage of AJAX, learning about different types of updates and row identification.
Front Burner Stories
As an Updater, I want to be able to refresh the result set.
Priority
Description
Size (Point) Estimate
Time Estimate
Time Remaining
Actual Time
Last Updated By
Status
1
AJAX research / spike
4
1.5
0
4
Chris
Complete
2
Design Analysis
4
1.75
0
2
Paul
Complete
3
DBManager Refactoring / Implementation
2
2
0
2.46
Paul
Complete
DBManager Unit Testing
2
1
.5
.75
In Progress
HTMLOutputGenerator Implementation
1
1
0
2.5
Paul
Complete
HTMLOutputGenerator Unit Testing
1
1
1
.5
Chris
Complete
Results Unit Testing
1
.5
Chris
Complete
Servlet Implementation
2
2
0
1.1
Paul
Complete
Servlet Unit Testing
1
1
1
In Progress
Client-side AJAX Implementation & Testing
4
6
0
2.33
Paul
Complete
4
Write acceptance tests
2
1
0
6.25
Eugene
Impediment
(Can not update server.xml)
Total
24
18.25
2.5
22.39
Points completed: 19
Issues
Support for sql script resources? (If macro body doesn't contain SQL statement) Parameter mapping? Transaction isolation? Heading row?
Should there be an indication of what rows changed for this story?
Integration testing phase does not have hooks for putting configuration into the atlassian-test-harness, or if it does, google doesn't know it.
Notes
responsible use of AJAX, limit number of commits.
Update table with primary keys (no joins, one or more rows)
Acceptance criteria:
varchars, ints supported
"clean" input accepted
exceptions accepted if user input is bad
Priority
Description
Time Estimate
Time Remaining
Actual Time
Last Updated By
Status
3
Design analysis
2
0
.95
Matt
Complete
4
Implementation and refactoring
4
0
4
Paul
Complete
Update Servlet implementation
3
0
2.8
Matt
Complete
Update Servlet unit testing
1
0
1
Paul
Complete
2
Setup test environoment
Database running
Example tables with example data
1.5
0
2.4
Eugene
Complete
5
Write acceptance tests
2
2
Eugene
Impediment
(Can not update server.xml)
1
CVS public repository
1
0
.75
Chris
Complete
Total
14.5
2
11.9
Points Completed: 21
Update table without primary key
Acceptance criteria:
warning provided if multiple rows will be updated
cancel function provided
varchars, ints supported
"clean" input accepted
exceptions accepted if user input is bad
Priority
Description
Time Estimate
Time Remaining
Actual Time
Last Updated By
Status
Design Analysis
3
0
3
Eugene
Complete
Implementation and refactoring
3.5
0
3
Eugene
Complete
Providing warning to user if multiple rows are being updated
1.25
0
2
Eugene
Complete
Write acceptance tests
2
2
Eugene
Impediment
(Can not update server.xml)
(Refresh) DBManager Unit Testing
1
0
2.5
Paul
Complete
(Refresh) Servlet Unit Testing
1
0
1.5
Paul
Complete
Total
11.75
2
12
Design just came as extension of previous update story. Only needed to send old values for WHERE clause
Back Burner Stories
Update view of table with primary key
Acceptance criteria:
varchars, ints supported
"clean" input accepted
exceptions accepted if user input is bad
Issues:
Can we find out if there are primary keys?
Can we use JDBC MetaData?
Oracle vs. MySQL JDBC driver
Priority
Description
Time Estimate
Time Remaining
Actual Time
Last Updated By
Status
Research/spike relationship between tables and views when updating rows
1.5
.5
1
Paul
In Progress
Create test VIEWs
.5
0
.5
Paul
Complete
Design Analysis
4
2
2
Paul
In Progress
Implementation and refactoring
3.5
3.5
Unit Testing
2
2
Write acceptance tests
2
2
Total
13
9.5
3.5
Notes
There are issues with updating views of multiple tables.
The approach we think will work is to query for the view definition in vendor specific manor, (MySQL has INFORMATION_SCHEMA table, but slightly different for oracle). Allows for a mapping aliases in the view results to the select statement they map to.
E.g.:
Select C, A FROM view1;
View has columns A, B, C, D, where A maps to t1.c1, B to t1.c2, C to t2.c2, D to t2.c1
Note that the order of columns, and number is not exact from the select and view, and the view's columns could be from other views, meaning the mapping has to be semi-recursive.
Overall: View columns in the select are mapped to the real view columns, then to the table columns they come from.
Update using author provided information (column names, sql, ...)
- Note: "user provided information" will be refined during sprint. Currently considering providing a list of column names.
Priority
Description
Time Estimate
Time remaining
Time Spent
Status
Design Analysis
3.5
0
2.5
Complete
Implementation and refactoring
3
0
.5
Complete
Get parameters from macroinfo
1
0
1
Complete
Presentation
3
0
3
Complete
Design images
1
0
1.5
Complete
Insert values into produced javascript, send to update servlet as 'keys
*Check for columns existing, if not show warning*
2
0
.5
Complete
Generate SQL Statement
1
0
.5
Complete
UI Refactoring
2
0
2.7
Complete
Edit Row Cancel
1
0
1.5
Complete
Make User supplied columns uneditable (when editing row) - modify javascript logic to add input elements to check both primary keys AND identifying columns
1.5
0
1
Complete
Unit testing
1.5
0
1.5
Complete
Write acceptance tests
2
0
.5
Complete
Total
22.5
0
16.7
Notes
UI refactoring:
Sorting columns
In cell click for edit
TODO
*make user supplied rows uneditable
*where in callback does the old data replacement go